﻿#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <unordered_map>
using namespace std;
/*
//菜鸡 自己写的代码
int romanToInt1(string s) 
{
	int sum = 0;
	int i = 0;
	for (i = 0; s[i] != '\0'; i++)
	{
		if (s[i] == 'I')
		{
			if (s[i + 1] == 'V')
			{
				sum += 4;
				i += 1;
			}
			else if (s[i + 1] == 'X')
			{
				sum += 9;
				i += 1;
			}
			else
			{
				sum += 1;
			}
		}
		else if (s[i] == 'X') 
		{
			if (s[i + 1] == 'L')
			{
				sum += 40;
				i += 1;
			}
			else if (s[i + 1] == 'C')
			{
				sum += 90;
				i += 1;
			}
			else
			{
				sum += 10;
			}
		}
		else if (s[i] == 'C')
		{
			if (s[i + 1] == 'D')
			{
				sum += 400;
				i += 1;
			}
			else if (s[i + 1] == 'M')
			{
				sum += 900;
				i += 1;
			}
			else
			{
				sum += 100;
			}
		}
		else if (s[i] == 'V')
		{
			sum += 5;
		}
		else if (s[i] == 'L')
		{
			sum += 50;
		}
		else if (s[i] == 'D')
		{
			sum += 500;
		}
		else if (s[i] == 'M')
		{
			sum += 1000;
		}
	}
	return sum;
}
//I 可以放在 V (5) 和 X (10) 的左边，来表示 4 和 9。
//X 可以放在 L (50) 和 C (100) 的左边，来表示 40 和 90。 
//C 可以放在 D (500) 和 M (1000) 的左边，来表示 400 和 900。

//大佬版代码
unordered_map<char, int> symbolValues = {
	{ 'I', 1 },
	{ 'V', 5 },
	{ 'X', 10 },
	{ 'L', 50 },
	{ 'C', 100 },
	{ 'D', 500 },
	{ 'M', 1000 },
};
int romanToInt(string s) {
	int ans = 0;
	int n = s.length();
	for (int i = 0; i < n; ++i) {
		int value = symbolValues[s[i]];
		if (i < n - 1 && value < symbolValues[s[i + 1]]) {
			ans -= value;
		}
		else {
			ans += value;
		}
	}
	return ans;
}
int main()
{
	cout << romanToInt("IV") << endl;
	system("pause");
	return 0;
}
*/